home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Disc to the Future 2
/
Disc to the Future Part II Programmer's Reference (Wayzata Technology)(6013)(1992).bin
/
MAC
/
MPW_TOOL
/
TOOLS
/
TOOLS_WI
/
ICON_8
/
H_FOLDER
/
CPUCONF.H
< prev
next >
Wrap
Text File
|
1990-03-02
|
5KB
|
177 lines
/*
* Configuration parameters that depend on computer architecture.
* Some depend on values defined in config.h, which is always
* included before this file.
*/
#ifndef CStateSize
#define CStateSize 15 /* size of C state for co-expressions */
#endif /* CStateSize */
/*
* The following definitions depend on the sizes of ints and pointers.
*/
/*
* Most of the present implementations use 32-bit "words". The section
* for 64-bit words is tentative and untested. 16-bit words are no
* longer supported. Note that WordBits is the number of bits in an Icon
* integer, not necessarily the number of bits in an int (given by IntBits).
* For example, in MS-DOS an Icon integer is a long, not an int.
*
* MaxStrLen must not be so large as to overlap flags.
*/
/*
* 64-bit words. NOTE: This section is under construction!
*/
#if WordBits == 64
#define MinLong ((long int)0x8000000000000000) /* smallest long integer */
#define MaxLong ((long int)0x7fffffffffffffff) /* largest long integer */
#define MaxDigits 40 /* maximum number of digits in images */
#define MaxStrLen 017777777777L /* maximum string length */
#define MaxNegInt "-9223372036854775808"
#define F_Nqual 0x8000000000000000 /* set if NOT string qualifier */
#define F_Var 0x4000000000000000 /* set if variable */
#define F_Tvar 0x2000000000000000 /* set if trapped variable */
#define F_Ptr 0x1000000000000000 /* set if value field is pointer */
#endif /* WordBits == 64 */
/*
* 32-bit words.
*/
#if WordBits == 32
#define MaxLong ((long int)017777777777L) /* largest long integer */
#define MinLong ((long int)020000000000L) /* smallest long integer */
#define MaxDigits 20 /* maximum number of digits in images */
#define MaxNegInt "-2147483648"
#define MaxStrLen 0777777777 /* maximum string length */
#define F_Nqual 0x80000000 /* set if NOT string qualifier */
#define F_Var 0x40000000 /* set if variable */
#define F_Tvar 0x20000000 /* set if trapped variable */
#define F_Ptr 0x10000000 /* set if value field is pointer */
#endif /* WordBits == 32 */
/* Values that depend on the number of bits in an int (not necessarily
* the same as the number of bits in a word).
*/
#if IntBits == 64
#define LogIntBits 6 /* log of IntBits */
#define MaxUnsigned 01777777777777777777777L /* largest unsigned integer */
#define MaxInt 0777777777777777777777L /* largest int */
/*
* Cset initialization macros.
*/
#define fwd(w0, w1, w2, w3) \
((w0)&0xffff : ((w1)&0xffff)<<16 : ((w2)&0xffff)<<32 : ((w3)&0xffff)<<48)
#define cset_display(w0,w1,w2,w3,w4,w5,w6,w7,w8,w9,wa,wb,wc,wd,we,wf) \
{fwd(w0,w1,w2,w3),fwd(w4,w5,w6,w7),fwd(w8,w9,wa,wb),fwd(wc,wd,we,wf)}
#endif /* IntBits == 64 */
#if IntBits == 32
#define LogIntBits 5 /* log of IntBits */
#define MaxUnsigned 037777777777 /* largest unsigned integer */
#define MaxInt 07777777777 /* largest int */
/*
* Cset initialization macros.
*/
#define twd(w0,w1) ((w0)&0xffff | (w1)<<16)
#define cset_display(w0,w1,w2,w3,w4,w5,w6,w7,w8,w9,wa,wb,wc,wd,we,wf) \
{twd(w0,w1),twd(w2,w3),twd(w4,w5),twd(w6,w7), \
twd(w8,w9),twd(wa,wb),twd(wc,wd),twd(we,wf)}
#endif /* IntBits == 32 */
#if IntBits == 16
#define LogIntBits 4 /* log of IntBits */
#define MaxUnsigned ((unsigned int)0177777) /* largest unsigned integer */
#define MaxInt 077777 /* largest int */
/*
* Cset initialization macro.
*/
#define cset_display(w0,w1,w2,w3,w4,w5,w6,w7,w8,w9,wa,wb,wc,wd,we,wf) \
{w0,w1,w2,w3,w4,w5,w6,w7,w8,w9,wa,wb,wc,wd,we,wf}
#endif /* IntBits == 16 */
#ifndef LogHuge
#define LogHuge 309 /* maximum base-10 exp+1 of real */
#endif /* LogHuge */
#ifndef Big
#define Big 9007199254740992. /* larger than 2^53 lose precision */
#endif /* Big */
#ifndef Precision
#define Precision 10 /* digits in string from real */
#endif /* Precision */
/*
* Parameters that configure tables and sets:
*
* HSlots Initial number of hash buckets; must be a power of 2.
* LogHSlots Log to the base 2 of HSlots.
*
* HSegs Maximum number of hash bin segments; the maximum number of
* hash bins is HSlots * 2 ^ (HSegs - 1).
*
* If Hsegs is increased above 12, the arrays log2[] and segsize[]
* in iconx will need modification.
*
* MaxHLoad Maximum loading factor; more hash bins are allocated when
* the average bin exceeds this many entries.
*
* MinHLoad Minimum loading factor; if a newly created table (e.g. via
* copy()) is more lightly loaded than this, bins are combined.
*
* Because splitting doubles the number of hash bins, and combining halves it,
* MaxHLoad should be at least twice MinHLoad.
*/
#ifndef HSlots
#if IntBits == 16
#define HSlots 4
#define LogHSlots 2
#else
#define HSlots 8
#define LogHSlots 3
#endif /* IntBits */
#endif /* HSlots */
#if ((1 << LogHSlots) != HSlots)
Deliberate Syntax Error -- HSlots and LogHSlots are inconsistent
#endif /* HSlots / LogHSlots consistency */
#ifndef HSegs
#if IntBits == 16
#define HSegs 6
#else
#define HSegs 10
#endif /* IntBits */
#endif /* HSegs */
#ifndef MinHLoad
#define MinHLoad 1
#endif /* MinHLoad */
#ifndef MaxHLoad
#define MaxHLoad 5
#endif /* MaxHLoad */
/*
* The number of bits in each base-B digit; the type DIGIT (unsigned int)
* in rt.h must be large enough to hold this many bits.
* It must be at least 2 and at most WordBits / 2.
*/
#define NB (WordBits / 2)